package com.mercadoutils.domain;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendMail {
	
	private Session session;
	private Properties props;
	private String mercadoUtilsMail = "mercadoutils@gmail.com";
	private String mercadoUtilsPassword = "mercadotesis";
	
	public SendMail(){
		props = new Properties();

		// Nombre del host de correo, es smtp.gmail.com
		props.setProperty("mail.smtp.host", "smtp.gmail.com");

		// TLS si está disponible
		props.setProperty("mail.smtp.starttls.enable", "true");

		// Puerto de gmail para envio de correos
		props.setProperty("mail.smtp.port","587");

		// Nombre del usuario
		props.setProperty("mail.smtp.user", this.mercadoUtilsMail);

		// Si requiere o no usuario y password para conectarse.
		props.setProperty("mail.smtp.auth", "true");
		
		session = Session.getDefaultInstance(props);
		session.setDebug(false);
		
	}
	
	public MimeMessage messageConstructor(String destinatario,String asunto, String mensaje, boolean htmlConfirm) throws AddressException, MessagingException{
		
		MimeMessage message = new MimeMessage(this.session);
		// Quien envia el correo
		message.setFrom(new InternetAddress(this.mercadoUtilsMail));
		// A quien va dirigido
		message.addRecipient(Message.RecipientType.TO, new InternetAddress(destinatario));
		// Con que asunto
		message.setSubject(asunto);
		// Cual es el mensaje
		if(htmlConfirm==true)
			message.setText(mensaje,"ISO-8859-1","html");
		else
			message.setText(mensaje);
		
		return message;
	}
	
	public void sendMessage(MimeMessage message) throws MessagingException{
		
		Transport t = this.session.getTransport("smtp");
		t.connect(this.mercadoUtilsMail,this.mercadoUtilsPassword);
		t.sendMessage(message,message.getAllRecipients());
		t.close();
	}
	
	

}
